/**
 * dsaasa
 */

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter);
// // 导入token
import { getToken } from '@/utils/token'
//导入页面组件
// import Login from '@/views/login/Login.vue'
// import Layout from '@/views/layout/index.vue'
// import NotFound from '@/views/404/NotFound'


// // 导入子路由
// import Chart from '@/views/layout/chart/Index.vue'
// import User from '@/views/layout/user/Index.vue'
// import Enterprise from '@/views/layout/enterprise/Index.vue'
// import Question from '@/views/layout/question/Index.vue'
// import Subject from '@/views/layout/subject/Index.vue'
// import welcome from '@/views/layout/welcome/Index.vue'
//路由懒加载
const Login = () => import('@/views/login/Login.vue');
const Layout = () => import('@/views/layout/index.vue');
const NotFound = () => import('@/views/404/NotFound');
const Chart = () => import('@/views/layout/chart/Index.vue');
const User = () => import('@/views/layout/user/Index.vue');
const Enterprise = () => import('@/views/layout/enterprise/Index.vue');
const Question = () => import('@/views/layout/question/Index.vue');
const Subject = () => import('@/views/layout/subject/Index.vue');
const welcome = () => import('@/views/layout/welcome/Index.vue');

//创建路由
const router = new VueRouter({
  //定义路由规则
  routes: [
    {
      path: "/login",
      component: Login,
      //路由元信息  就是配置额外参数
      meta: {
        title: '登录',
      }
    },
    {
      path: "/layout",
      component: Layout,
      redirect: '/layout/welcome',
      meta: {
        title: '学科列表',
        jumPath: '/layout/subject',
        icon: 'el-icon-office-building',
        roles: ['超级管理员', '管理员', '老师','学生'] // 代表哪些角色可以访问
      },
      children: [
        // 要注意，以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。
     
        {
          path: 'welcome', component:welcome, meta: {
            title: '欢迎您',
            jumPath: '/layout/welcome',
            icon: 'el-icon-pie-chart',
            roles: ['超级管理员', '管理员', '老师','学生'] // 代表哪些角色可以访问
          }
        },
        {
          path: 'chart', component: Chart, meta: {
            title: '数据预览',
            jumPath: '/layout/chart',
            icon: 'el-icon-pie-chart',
            roles: ['超级管理员', '管理员', '老师'] // 代表哪些角色可以访问
          }
        },
        {
          path: 'user', component: User, meta: {
            title: '用户列表',
            jumPath: '/layout/user',
            icon: 'el-icon-user',
            roles: ['超级管理员', '管理员', '老师'] // 代表哪些角色可以访问
          }
        },
        {
          path: 'enterprise', component: Enterprise, meta: {
            title: '企业列表',
            jumPath: '/layout/enterprise',
            icon: 'el-icon-office-building',
            roles: ['超级管理员', '管理员', '老师'] // 代表哪些角色可以访问
          }
        },
        {
          path: 'question', component: Question, meta: {
            title: '题库列表',
            jumPath: '/layout/question',
            icon: 'el-icon-edit-outline',
            roles: ['超级管理员', '管理员', '老师', '学生'] // 代表哪些角色可以访问
          }
        },
        {
          path: 'subject', component: Subject, meta: {
            title: '学科列表',
            jumPath: '/layout/subject',
            icon: 'el-icon-office-building',
            roles: ['超级管理员', '管理员', '老师'] // 代表哪些角色可以访问
          }
        }
        // { path: '', redirect: 'user' }
      ]
    },
    //路由从定向
    {
      path: '/',
      redirect: './login'
    },
    {
      path: '*',
      component: NotFound
    }
  ]
});





// to: Route: 即将要进入的目标 路由对象

// from: Route: 当前导航正要离开的路由

// next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数
router.beforeEach((to, from, next) => {

  if (to.path === "/login") {
    //如果是登陆页面就直接放行
    next()
  } else {
    const token = getToken();

    if (!token) {
      //  如果没带token就打回去
      next('/login');
    } else {
      // 可以就放行
      next();
    }

  }
  // 
});
router.afterEach((to) => {
  document.title = to.meta.title || '少华pc'
})
//Es6中的默认路由导出
export default router